import java.util.*;

public class Main1 {

    public static boolean isFibonacciCycle(int N) {
        // 将数字 N 拆分为各个数字
        String str = Integer.toString(N);
        int n = str.length();

        // 构造类斐波那契数列
        List<Integer> S = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            S.add(str.charAt(i) - '0');
        }

        // 生成斐波那契数列，直到包含 N 或者数列变得很大
        Set<Integer> seen = new HashSet<>();
        while (true) {
            int sum = 0;
            for (int i = S.size() - n; i < S.size(); i++) {
                sum += S.get(i);
            }
            S.add(sum);

            // 如果 sum 等于 N，表示 N 出现在数列中
            if (sum == N) {
                return true;
            }

            // 如果 sum 大于 N 且没有找到，提前结束循环
            if (sum > N) {
                break;
            }
        }

        return false;
    }

    public static void main(String[] args) {
        int maxCycleNumber = -1;

        // 在 0 至 10^7 范围内查找最大类斐波那契循环数
        for (int N = 1; N <= 10000000; N++) {
            if (isFibonacciCycle(N)) {
                maxCycleNumber = N;
            }
        }

        // 输出最大的类斐波那契循环数
        System.out.println(maxCycleNumber);
    }
}
